package com.yss.reportworld.service;

import com.yss.reportworld.domain.SqlScript;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yss.system.api.domain.SysDictData;

import java.util.List;

/**
 * SQL脚本管理Service接口
 *
 * @author yss
 * @date 2023-03-27
 */
public interface ISqlScriptService extends IService<SqlScript> {

    /**
     * 查询SQL脚本管理列表
     *
     * @param sqlScript SQL脚本管理
     * @return SQL脚本管理集合
     */
    public List<SqlScript> selectSqlScriptList(SqlScript sqlScript);

    /**
     * 查询完整的SQL,导出脚本
     *
     * @param sqlScript
     * @return
     */
    public List<SqlScript> selectSqlScriptListSql(SqlScript sqlScript);

    /**
     * 检查SQL的规范
     *
     * @param sqlScript
     * @return
     * @throws Exception
     */
    public String checkSqlScript(SqlScript sqlScript) throws Exception;


    /**
     * 审核脚本
     *
     * @param ids
     * @return
     * @throws Exception
     */
    public String processSqlScript(List<String> ids);

    /**
     * 审核退回功能
     *
     * @param approvalReason
     * @return
     */
    public void rebutSqlScript(List<String> idList, String approvalReason);


    /**
     * 获取能还原的版本号集合，前台显示
     *
     * @param maxVersion 是否包含最大
     * @return
     */
    public List<SysDictData> getReductionVersion(boolean maxVersion);


    /**
     * 还原版本数据
     *
     * @param version 还原的版本号
     * @throws Exception
     */
    public void reductionData(String version);

}
